import { View, Text, Button } from "@tarojs/components";
import {
  useLoad,
  getCurrentInstance,
  getCurrentPages,
  eventCenter,
} from "@tarojs/taro";
import "./index.scss";

export default function Detail() {
  useLoad((query) => {
    console.log("Page loaded.", query);

    // 如何获取 通道对象
    //      1. 原生小程序  this.getOpenerEventChannel
    //      2. Taro
    //          1. getCurrentInstance() 获取当前页面实例，
    //             - app      应用实例
    //             - page     当前页面实例
    //             - router   当前路由实例
    //          2. getCurrentPages()    获取页面栈信息，是个数组，最后一项就是当前页面的实例对象
    // const ins: any = getCurrentInstance();
    // const chan = ins.page.getOpenerEventChannel();
    // chan.emit("message");

    const pages = getCurrentPages();
    const currentPage = pages[pages.length - 1];
    const chan = currentPage.getOpenerEventChannel();
    chan.emit("message");
  });

  return (
    <View className='detail'>
      <Text>Hello world!</Text>

      <Button
        onClick={() => {
          /**
           * PS:
           *    1. 得确保上一个页面是存在的，比如使用 navigateTo 打开该页面，那么上一个页面是没有被销毁的。
           *        但是，如果该页面是通过 relaunch 打开的话，上个页面是不存在的。
           *    2. 下面代码，正确小程序原生是没毛病的。Taro中有问题
           */
          // const pages = getCurrentPages(); // []
          // const prevPage = pages[pages.length - 2]; // 获取上一个页面的实例
          // if (prevPage) {
          //   console.log("prevPage", prevPage);
          //   prevPage?.increment();
          // }
          /**
           * 采用 eventCenter 的方式来玩
           */

          eventCenter.trigger("add");
        }}
      >
        调用上一个页面的方法
      </Button>
    </View>
  );
}
